package com.ff.xyh.consumer.messagedeliver.config;

import com.ff.xyh.consumer.messagedeliver.keys.RoutingKey1;
import org.springframework.amqp.core.*;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.context.annotation.Bean;

/**
 * @Auther FF
 * @Date 2022年 11月 12日
 * @Time 23:52
 */

/**
 * controller作为生产者端 listener作为消费者端
 * 在config声明交换机 队列 需要时进行绑定 也可以在消费者添加@RabbitListener注解时绑定
 */
//@Configuration
public class RabbitMqXxxConfig {

//    /**
//     * 创建fanout交换机
//     * @return
//     */
//    @Bean
//    public FanoutExchange fanoutEx1() {
//        return new FanoutExchange("fanoutEx1");
//    }
//    @Bean
//    public Queue fanoutQ1() {
//        return new Queue("fanoutQ1");
//    }
//    @Bean
//    public Queue fanoutQ2() {
//        return new Queue("fanoutQ2");
//    }
//    // 无法同时绑定
//    @Bean
//    public Binding fanoutBinding1(Queue fanoutQ1, Queue fanoutQ2, FanoutExchange fanoutEx1) {
//        return BindingBuilder.bind(fanoutQ1).to(fanoutEx1);
//    }
//    @Bean
//    public Binding fanoutBinding2(Queue fanoutQ1, Queue fanoutQ2, FanoutExchange fanoutEx1) {
//        return BindingBuilder.bind(fanoutQ2).to(fanoutEx1);
//    }
//
//    @Bean
//    public DirectExchange directEx1() {
//        return new DirectExchange("directEx1");
//    }
//    @Bean
//    public Queue directQ1() {
//        return new Queue("directQ1");
//    }
////    @Bean
////    public Binding directBinding1(Queue directQ1, DirectExchange directEx1) {
////        //                                                 with 要枚举类的keys
////        return BindingBuilder.bind(directQ1).to(directEx1).with(RoutingKey1.ROUTING_KEY_1);
////    }
//
//    /**
//     * 添加自定义消息转换器 不需要声明 会自动注入
//     * 原有消息转换器为序列化对象，性能差
//     * 注意： 发送方与接收方需要使用相同的转换器
//     * @return
//     */
//    @Bean
//    public MessageConverter messageConverter() {
//        return new Jackson2JsonMessageConverter();
//    }
}
